<?php

class frontController
{
	private $controller ; 	// nombre del controlador.
	private $action ; 		// accion del controlador.

	static function main()
	{
		/* genero el nombre del controlador, o se toma index por defecto. */
		$url = ( isset( $_GET['url'] ) ) ? strtolower( $_GET['url'] ) : 'index/index' ;

		$url = explode( '/', $url ) ;

		$controllerName = $url[0] . 'Controller' ;
		$actionName = ( isset( $url[1] ) && $url[1] != '' ) ? $url[1] : 'index' ;

		/* creo la ruta al controlador */
		$controllerPath = _controllers . $controllerName . '.class.php' ;
		
		/* si el controlador no existe, cargo el controlador error */
		if( !file_exists( $controllerPath ) ) 
		{
			outputError( 'Controller error: <b>' . $controllerPath . '</b>', __FILE__, __LINE__ ) ;
			$controllerName = "errorController" ;
			$actionName = "index" ;
		}
		
		/* si el metodo no existe, cargo el controlador error */
		if( !is_callable( array( $controllerName, $actionName ) ) ) 
		{
			outputError( 'Method error: <b>' . $controllerPath . '->' . $actionName . '</b>', __FILE__, __LINE__ ) ;
			$controllerName = "errorController" ;
			$actionName = "index" ;
		}
		
		$controller = new $controllerName( $controllerName, $actionName ) ;
		$controller->$actionName() ;
	}
		
} // class end